// =================================简单自定义左边工具栏===========================================
export default class CustomPalette {
  constructor (bpmnFactory, create, elementFactory, palette, translate) {
    this.bpmnFactory = bpmnFactory
    this.create = create
    this.elementFactory = elementFactory
    this.translate = translate

    palette.registerProvider(this)
  }

  getPaletteEntries (element) {
    const {
      bpmnFactory,
      create,
      elementFactory,
      translate
    } = this

    function createStartEvent () {
      return {
        lufei: (event) => {
          // 还可以用来创建bpmn:StartEvent、bpmn:ServiceTask、bpmn:ExclusiveGateway等等...
          const businessObject = bpmnFactory.create('bpmn:StartEvent') // 貌似是继承哪一个类型的能力
          const shape = elementFactory.createShape({
            // 创建这个元素的类型 我先虽随便写了
            type: 'bpmn:lufei',
            businessObject
          })
          console.log(shape) // 只在拖动或者点击时触发
          create.start(event, shape)
        },
        namei: (event) => {
          // 还可以用来创建bpmn:StartEvent、bpmn:ServiceTask、bpmn:ExclusiveGateway等等...
          const businessObject = bpmnFactory.create('bpmn:ServiceTask') // 貌似是继承哪一个类型的能力
          const shape = elementFactory.createShape({
            // 创建这个元素的类型 我先虽随便写了876
            type: 'bpmn:namei',
            businessObject
          })
          console.log(shape) // 只在拖动或者点击时触发
          create.start(event, shape)
        }
      }
    }

    return {
      'create.lufei': {
        group: 'model', // group: 属于哪个分组, 比如tools、event、gateway、activity等等,用于分类
        className: 'icon-custom lindaidai-task lufei', // 可以用这些类名自定义
        title: translate('创建一个类型为lindaidai-task的任务节点'), // 鼠标放上去的提示信息
        action: {
          // 监听事件
          dragstart: createStartEvent().lufei, // 拖动
          click: createStartEvent().lufei // 点击
        }
      },
      'create.namei': {
        group: 'model', // group: 属于哪个分组, 比如tools、event、gateway、activity等等,用于分类
        className: 'icon-custom lindaidai-task namei', // 可以用这些类名自定义
        title: translate('创建一个类型为lindaidai-task的任务节点'), // 鼠标放上去的提示信息
        action: {
          // 监听事件
          dragstart: createStartEvent().namei, // 拖动
          click: createStartEvent().namei // 点击
        }
      }
    }
  }
}

CustomPalette.$inject = [
  'bpmnFactory',
  'create',
  'elementFactory',
  'palette',
  'translate'
]
